package com.gupao.proxy.jdk;

import sun.misc.ProxyGenerator;

import java.io.FileOutputStream;

public class TestFindLove {

    public static void main(String[] args) {
        try {
            Person person = (Person) new Meipo().getInstance(new Chenkai());
            person.findLove();

            /**原理
            1、拿到代理对象的引用，然后获取它的接口
             2、JDK代理重新生成一个类，同时实现我们给的代理对象所实现的接口
             3、把代理对象的引用拿到
             4、重新生成一个class字节码
             5、然后编译
             **/


            byte[] generateProxyClass = ProxyGenerator.generateProxyClass("$Proxy0",new Class[]{Person.class});

            FileOutputStream os = new FileOutputStream("$Proxy0.class");

            os.write(generateProxyClass);
            os.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
